<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/percpu.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/percpu.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9QRVJDUFVfSF8w"><span class="b">__LINUX_PERCPU_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9QRVJDUFVfSF8w"><span class="b">__LINUX_PERCPU_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">preempt</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">smp</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">cpumask</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">pfn</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">init</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> 
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">percpu</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> 
<a name="12" /><span class="Maybe">      12:</span> <span class="k">/* enough to cover all DEFINE_PER_CPUs in modules */</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX01PRFVMRVNfMA__"><span class="b">CONFIG_MODULES</span></a>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX01PRFVMRV9SRVNFUlZFXzA_"><span class="b">PERCPU_MODULE_RESERVE</span></a>        <span class="f">(</span><span class="c">8</span> <span class="f">&lt;&lt;</span> <span class="c">10</span><span class="f">)</span>
<a name="15" /><span class="False">      15:</span> <span class="f">#</span><span class="n">else</span>
<a name="16" /><span class="False">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX01PRFVMRV9SRVNFUlZFXzA_"><span class="b">PERCPU_MODULE_RESERVE</span></a>        <span class="c">0</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">endif</span>
<a name="18" /><span class="Maybe">      18:</span> 
<a name="19" /><span class="Maybe">      19:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_UEVSQ1BVX0VOT1VHSF9ST09NXzA_"><span class="b">PERCPU_ENOUGH_ROOM</span></a>
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_UEVSQ1BVX0VOT1VHSF9ST09NXzA_"><span class="b">PERCPU_ENOUGH_ROOM</span></a>                        \
<a name="21" /><span class="Maybe">      21:</span>     <span class="f">(</span><a href="cpu.c_macros_noref.html#_QUxJR05fMA__"><span class="b">ALIGN</span></a><span class="f">(</span><span class="b">__per_cpu_end</span> <span class="f">-</span> <span class="b">__per_cpu_start</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_U01QX0NBQ0hFX0JZVEVTXzA_"><span class="b">SMP_CACHE_BYTES</span></a><span class="f">)</span> <span class="f">+</span>    \
<a name="22" /><span class="Maybe">      22:</span>      <a href="cpu.c_macros_noref.html#_UEVSQ1BVX01PRFVMRV9SRVNFUlZFXzA_"><span class="b">PERCPU_MODULE_RESERVE</span></a><span class="f">)</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="f">#</span><span class="n">endif</span>
<a name="24" /><span class="Maybe">      24:</span> 
<a name="25" /><span class="Maybe">      25:</span> <span class="k">/*</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> * Must be an lvalue. Since @var must be a simple identifier,</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="k"> * we force a syntax error here if it isn&apos;t.</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="k"> */</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Z2V0X2NwdV92YXJfMA__"><span class="b">get_cpu_var</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span> <span class="f">(</span><span class="f">*</span><span class="f">(</span><span class="f">{</span>                \
<a name="30" /><span class="Maybe">      30:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9kaXNhYmxlXzA_"><span class="b">preempt_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                \
<a name="31" /><span class="Maybe">      31:</span>     <span class="f">&amp;</span><a href="cpu.c_macros_noref.html#_X19nZXRfY3B1X3Zhcl8w"><span class="b">__get_cpu_var</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span><span class="f">)</span>
<a name="32" /><span class="Maybe">      32:</span> 
<a name="33" /><span class="Maybe">      33:</span> <span class="k">/*</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="k"> * The weird &amp; is necessary because sparse considers (void)(var) to be</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="k"> * a direct dereference of percpu variable (var).</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> */</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cHV0X2NwdV92YXJfMA__"><span class="b">put_cpu_var</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span>                \
<a name="38" /><span class="Maybe">      38:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">&amp;</span><span class="f">(</span><span class="b">var</span><span class="f">)</span><span class="f">;</span>                    \
<a name="39" /><span class="Maybe">      39:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9lbmFibGVfMA__"><span class="b">preempt_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                \
<a name="40" /><span class="Maybe">      40:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="41" /><span class="Maybe">      41:</span> 
<a name="42" /><span class="Maybe">      42:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Z2V0X2NwdV9wdHJfMA__"><span class="b">get_cpu_ptr</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span> <span class="f">(</span><span class="f">{</span>                \
<a name="43" /><span class="Maybe">      43:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9kaXNhYmxlXzA_"><span class="b">preempt_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                \
<a name="44" /><span class="Maybe">      44:</span>     <a href="cpu.c_macros_noref.html#_dGhpc19jcHVfcHRyXzA_"><span class="b">this_cpu_ptr</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="45" /><span class="Maybe">      45:</span> 
<a name="46" /><span class="Maybe">      46:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cHV0X2NwdV9wdHJfMA__"><span class="b">put_cpu_ptr</span></a><span class="f">(</span><span class="b">var</span><span class="f">)</span> <span class="m">do</span> <span class="f">{</span>                \
<a name="47" /><span class="Maybe">      47:</span>     <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">(</span><span class="b">var</span><span class="f">)</span><span class="f">;</span>                    \
<a name="48" /><span class="Maybe">      48:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9lbmFibGVfMA__"><span class="b">preempt_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                \
<a name="49" /><span class="Maybe">      49:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="50" /><span class="Maybe">      50:</span> 
<a name="51" /><span class="Maybe">      51:</span> <span class="k">/* minimum unit size, also is the maximum supported allocation size */</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UENQVV9NSU5fVU5JVF9TSVpFXzA_"><span class="b">PCPU_MIN_UNIT_SIZE</span></a>        <a href="cpu.c_macros_noref.html#_UEZOX0FMSUdOXzA_"><span class="b">PFN_ALIGN</span></a><span class="f">(</span><span class="c">32</span> <span class="f">&lt;&lt;</span> <span class="c">10</span><span class="f">)</span>
<a name="53" /><span class="Maybe">      53:</span> 
<a name="54" /><span class="Maybe">      54:</span> <span class="k">/*</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * Percpu allocator can serve percpu allocations before slab is</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> * initialized which allows slab to depend on the percpu allocator.</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * The following two parameters decide how much resource to</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * preallocate for this.  Keep PERCPU_DYNAMIC_RESERVE equal to or</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * larger than PERCPU_DYNAMIC_EARLY_SIZE.</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> */</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX0RZTkFNSUNfRUFSTFlfU0xPVFNfMA__"><span class="b">PERCPU_DYNAMIC_EARLY_SLOTS</span></a>    <span class="c">128</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX0RZTkFNSUNfRUFSTFlfU0laRV8w"><span class="b">PERCPU_DYNAMIC_EARLY_SIZE</span></a>    <span class="f">(</span><span class="c">12</span> <span class="f">&lt;&lt;</span> <span class="c">10</span><span class="f">)</span>
<a name="63" /><span class="Maybe">      63:</span> 
<a name="64" /><span class="Maybe">      64:</span> <span class="k">/*</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> * PERCPU_DYNAMIC_RESERVE indicates the amount of free area to piggy</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> * back on the first chunk for dynamic percpu allocation if arch is</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> * manually allocating and mapping it for faster access (as a part of</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> * large page mapping for example).</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> *</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> * The following values give between one and two pages of free space</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> * after typical minimal boot (2-way SMP, single disk and NIC) with</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> * both defconfig and a distro config on x86_64 and 32.  More</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> * intelligent way to determine this would be nice.</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="k"> */</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a> <span class="f">&gt;</span> <span class="c">32</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX0RZTkFNSUNfUkVTRVJWRV8w"><span class="b">PERCPU_DYNAMIC_RESERVE</span></a>        <span class="f">(</span><span class="c">20</span> <span class="f">&lt;&lt;</span> <span class="c">10</span><span class="f">)</span>
<a name="77" /><span class="False">      77:</span> <span class="f">#</span><span class="n">else</span>
<a name="78" /><span class="False">      78:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_UEVSQ1BVX0RZTkFNSUNfUkVTRVJWRV8w"><span class="b">PERCPU_DYNAMIC_RESERVE</span></a>        <span class="f">(</span><span class="c">12</span> <span class="f">&lt;&lt;</span> <span class="c">10</span><span class="f">)</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="f">#</span><span class="n">endif</span>
<a name="80" /><span class="Maybe">      80:</span> 
<a name="81" /><span class="Maybe">      81:</span> <span class="m">extern</span> <span class="m">void</span> <span class="f">*</span><span class="b">pcpu_base_addr</span><span class="f">;</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="b">pcpu_unit_offsets</span><span class="f">;</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="m">struct</span> <span class="b">pcpu_group_info</span> <span class="f">{</span>
<a name="85" /><span class="Maybe">      85:</span>     <span class="m">int</span>            <span class="b">nr_units</span><span class="f">;</span>    <span class="k">/* aligned # of units */</span>
<a name="86" /><span class="Maybe">      86:</span>     <span class="m">unsigned</span> <span class="m">long</span>        <span class="b">base_offset</span><span class="f">;</span>    <span class="k">/* base address offset */</span>
<a name="87" /><span class="Maybe">      87:</span>     <span class="m">unsigned</span> <span class="m">int</span>        <span class="f">*</span><span class="b">cpu_map</span><span class="f">;</span>    <span class="k">/* unit-&gt;cpu map, empty</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="k">                         * entries contain NR_CPUS */</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">}</span><span class="f">;</span>
<a name="90" /><span class="Maybe">      90:</span> 
<a name="91" /><span class="Maybe">      91:</span> <span class="m">struct</span> <span class="b">pcpu_alloc_info</span> <span class="f">{</span>
<a name="92" /><span class="Maybe">      92:</span>     <span class="b">size_t</span>            <span class="b">static_size</span><span class="f">;</span>
<a name="93" /><span class="Maybe">      93:</span>     <span class="b">size_t</span>            <span class="b">reserved_size</span><span class="f">;</span>
<a name="94" /><span class="Maybe">      94:</span>     <span class="b">size_t</span>            <span class="b">dyn_size</span><span class="f">;</span>
<a name="95" /><span class="Maybe">      95:</span>     <span class="b">size_t</span>            <span class="b">unit_size</span><span class="f">;</span>
<a name="96" /><span class="Maybe">      96:</span>     <span class="b">size_t</span>            <span class="b">atom_size</span><span class="f">;</span>
<a name="97" /><span class="Maybe">      97:</span>     <span class="b">size_t</span>            <span class="b">alloc_size</span><span class="f">;</span>
<a name="98" /><span class="Maybe">      98:</span>     <span class="b">size_t</span>            <span class="b">__ai_size</span><span class="f">;</span>    <span class="k">/* internal, don&apos;t use */</span>
<a name="99" /><span class="Maybe">      99:</span>     <span class="m">int</span>            <span class="b">nr_groups</span><span class="f">;</span>    <span class="k">/* 0 if grouping unnecessary */</span>
<a name="100" /><span class="Maybe">     100:</span>     <span class="m">struct</span> <span class="b">pcpu_group_info</span>    <span class="b">groups</span><span class="f">[</span><span class="f">]</span><span class="f">;</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="f">}</span><span class="f">;</span>
<a name="102" /><span class="Maybe">     102:</span> 
<a name="103" /><span class="Maybe">     103:</span> <span class="m">enum</span> <span class="b">pcpu_fc</span> <span class="f">{</span>
<a name="104" /><span class="Maybe">     104:</span>     <span class="b">PCPU_FC_AUTO</span><span class="f">,</span>
<a name="105" /><span class="Maybe">     105:</span>     <span class="b">PCPU_FC_EMBED</span><span class="f">,</span>
<a name="106" /><span class="Maybe">     106:</span>     <span class="b">PCPU_FC_PAGE</span><span class="f">,</span>
<a name="107" /><span class="Maybe">     107:</span> 
<a name="108" /><span class="Maybe">     108:</span>     <span class="b">PCPU_FC_NR</span><span class="f">,</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="f">}</span><span class="f">;</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="m">extern</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span> <span class="m">const</span> <span class="b">pcpu_fc_names</span><span class="f">[</span><span class="b">PCPU_FC_NR</span><span class="f">]</span><span class="f">;</span>
<a name="111" /><span class="Maybe">     111:</span> 
<a name="112" /><span class="Maybe">     112:</span> <span class="m">extern</span> <span class="m">enum</span> <span class="b">pcpu_fc</span> <span class="b">pcpu_chosen_fc</span><span class="f">;</span>
<a name="113" /><span class="Maybe">     113:</span> 
<a name="114" /><span class="Maybe">     114:</span> <span class="m">typedef</span> <span class="m">void</span> <span class="f">*</span> <span class="f">(</span><span class="f">*</span><span class="b">pcpu_fc_alloc_fn_t</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">,</span>
<a name="115" /><span class="Maybe">     115:</span>                      <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="Maybe">     116:</span> <span class="m">typedef</span> <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">pcpu_fc_free_fn_t</span><span class="f">)</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">ptr</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">size</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="m">typedef</span> <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">pcpu_fc_populate_pte_fn_t</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="Maybe">     118:</span> <span class="m">typedef</span> <span class="m">int</span> <span class="f">(</span><span class="b">pcpu_fc_cpu_distance_fn_t</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">from</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">to</span><span class="f">)</span><span class="f">;</span>
<a name="119" /><span class="Maybe">     119:</span> 
<a name="120" /><span class="Maybe">     120:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">pcpu_alloc_info</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">pcpu_alloc_alloc_info</span><span class="f">(</span><span class="m">int</span> <span class="b">nr_groups</span><span class="f">,</span>
<a name="121" /><span class="Maybe">     121:</span>                                  <span class="m">int</span> <span class="b">nr_units</span><span class="f">)</span><span class="f">;</span>
<a name="122" /><span class="Maybe">     122:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">pcpu_free_alloc_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">pcpu_alloc_info</span> <span class="f">*</span><span class="b">ai</span><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="Maybe">     123:</span> 
<a name="124" /><span class="Maybe">     124:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">pcpu_setup_first_chunk</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">pcpu_alloc_info</span> <span class="f">*</span><span class="b">ai</span><span class="f">,</span>
<a name="125" /><span class="Maybe">     125:</span>                      <span class="m">void</span> <span class="f">*</span><span class="b">base_addr</span><span class="f">)</span><span class="f">;</span>
<a name="126" /><span class="Maybe">     126:</span> 
<a name="127" /><span class="Maybe">     127:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05FRURfUEVSX0NQVV9FTUJFRF9GSVJTVF9DSFVOS18w"><span class="b">CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK</span></a>
<a name="128" /><span class="Maybe">     128:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">pcpu_embed_first_chunk</span><span class="f">(</span><span class="b">size_t</span> <span class="b">reserved_size</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">dyn_size</span><span class="f">,</span>
<a name="129" /><span class="Maybe">     129:</span>                 <span class="b">size_t</span> <span class="b">atom_size</span><span class="f">,</span>
<a name="130" /><span class="Maybe">     130:</span>                 <span class="b">pcpu_fc_cpu_distance_fn_t</span> <span class="b">cpu_distance_fn</span><span class="f">,</span>
<a name="131" /><span class="Maybe">     131:</span>                 <span class="b">pcpu_fc_alloc_fn_t</span> <span class="b">alloc_fn</span><span class="f">,</span>
<a name="132" /><span class="Maybe">     132:</span>                 <span class="b">pcpu_fc_free_fn_t</span> <span class="b">free_fn</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="Maybe">     133:</span> <span class="f">#</span><span class="n">endif</span>
<a name="134" /><span class="Maybe">     134:</span> 
<a name="135" /><span class="Maybe">     135:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX05FRURfUEVSX0NQVV9QQUdFX0ZJUlNUX0NIVU5LXzA_"><span class="b">CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK</span></a>
<a name="136" /><span class="Maybe">     136:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">pcpu_page_first_chunk</span><span class="f">(</span><span class="b">size_t</span> <span class="b">reserved_size</span><span class="f">,</span>
<a name="137" /><span class="Maybe">     137:</span>                 <span class="b">pcpu_fc_alloc_fn_t</span> <span class="b">alloc_fn</span><span class="f">,</span>
<a name="138" /><span class="Maybe">     138:</span>                 <span class="b">pcpu_fc_free_fn_t</span> <span class="b">free_fn</span><span class="f">,</span>
<a name="139" /><span class="Maybe">     139:</span>                 <span class="b">pcpu_fc_populate_pte_fn_t</span> <span class="b">populate_pte_fn</span><span class="f">)</span><span class="f">;</span>
<a name="140" /><span class="Maybe">     140:</span> <span class="f">#</span><span class="n">endif</span>
<a name="141" /><span class="Maybe">     141:</span> 
<a name="142" /><span class="Maybe">     142:</span> <span class="k">/*</span>
<a name="143" /><span class="Maybe">     143:</span> <span class="k"> * Use this to get to a cpu&apos;s version of the per-cpu object</span>
<a name="144" /><span class="Maybe">     144:</span> <span class="k"> * dynamically allocated. Non-atomic access to the current CPU&apos;s</span>
<a name="145" /><span class="Maybe">     145:</span> <span class="k"> * version should probably be combined with get_cpu()/put_cpu().</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="k"> */</span>
<a name="147" /><span class="Maybe">     147:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="148" /><span class="Maybe">     148:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cGVyX2NwdV9wdHJfMA__"><span class="b">per_cpu_ptr</span></a><span class="f">(</span><span class="b">ptr</span><span class="f">,</span> <span class="b">cpu</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_U0hJRlRfUEVSQ1BVX1BUUl8w"><span class="b">SHIFT_PERCPU_PTR</span></a><span class="f">(</span><span class="f">(</span><span class="b">ptr</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_cGVyX2NwdV9vZmZzZXRfMA__"><span class="b">per_cpu_offset</span></a><span class="f">(</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="149" /><span class="False">     149:</span> <span class="f">#</span><span class="n">else</span>
<a name="150" /><span class="False">     150:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_cGVyX2NwdV9wdHJfMA__"><span class="b">per_cpu_ptr</span></a><span class="f">(</span><span class="b">ptr</span><span class="f">,</span> <span class="b">cpu</span><span class="f">)</span>    <span class="f">(</span><span class="f">{</span> <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">(</span><span class="b">cpu</span><span class="f">)</span><span class="f">;</span> <span class="b">VERIFY_PERCPU_PTR</span><span class="f">(</span><span class="f">(</span><span class="b">ptr</span><span class="f">)</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span>
<a name="151" /><span class="Maybe">     151:</span> <span class="f">#</span><span class="n">endif</span>
<a name="152" /><span class="Maybe">     152:</span> 
<a name="153" /><span class="Maybe">     153:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a> <span class="f">*</span><span class="b">__alloc_reserved_percpu</span><span class="f">(</span><span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span><span class="f">;</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">is_kernel_percpu_address</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="False">     156:</span> <span class="f">#</span><span class="n">if</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a><span class="f">)</span> <span class="f">||</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX0hBVkVfU0VUVVBfUEVSX0NQVV9BUkVBXzA_"><span class="b">CONFIG_HAVE_SETUP_PER_CPU_AREA</span></a><span class="f">)</span>
<a name="157" /><span class="False">     157:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">setup_per_cpu_areas</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="f">#</span><span class="n">endif</span>
<a name="159" /><span class="Maybe">     159:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">percpu_init_late</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="160" /><span class="Maybe">     160:</span> 
<a name="161" /><span class="Maybe">     161:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a> <span class="f">*</span><span class="b">__alloc_percpu</span><span class="f">(</span><span class="b">size_t</span> <span class="b">size</span><span class="f">,</span> <span class="b">size_t</span> <span class="b">align</span><span class="f">)</span><span class="f">;</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">free_percpu</span><span class="f">(</span><span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a> <span class="f">*</span><span class="b">__pdata</span><span class="f">)</span><span class="f">;</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="m">extern</span> <span class="b">phys_addr_t</span> <span class="b">per_cpu_ptr_to_phys</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="164" /><span class="Maybe">     164:</span> 
<a name="165" /><span class="Maybe">     165:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YWxsb2NfcGVyY3B1XzA_"><span class="b">alloc_percpu</span></a><span class="f">(</span><span class="b">type</span><span class="f">)</span>    \
<a name="166" /><span class="Maybe">     166:</span>     <span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">type</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19wZXJjcHVfMA__"><span class="b">__percpu</span></a> <span class="f">*</span><span class="f">)</span><span class="b">__alloc_percpu</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">type</span><span class="f">)</span><span class="f">,</span> <span class="b">__alignof__</span><span class="f">(</span><span class="b">type</span><span class="f">)</span><span class="f">)</span>
<a name="167" /><span class="Maybe">     167:</span> 
<a name="168" /><span class="Maybe">     168:</span> <span class="k">/*</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="k"> * Branching function to split up a function into a set of functions that</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="k"> * are called for different scalar sizes of the objects handled.</span>
<a name="171" /><span class="Maybe">     171:</span> <span class="k"> */</span>
<a name="172" /><span class="Maybe">     172:</span> 
<a name="173" /><span class="Maybe">     173:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__bad_size_call_parameter</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span> 
<a name="175" /><span class="Maybe">     175:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm5fMA__"><span class="b">__pcpu_size_call_return</span></a><span class="f">(</span><span class="b">stem</span><span class="f">,</span> <span class="b">variable</span><span class="f">)</span>                \
<a name="176" /><span class="Maybe">     176:</span> <span class="f">(</span><span class="f">{</span>    <span class="b">typeof</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span> <span class="b">pscr_ret__</span><span class="f">;</span>                    \
<a name="177" /><span class="Maybe">     177:</span>     <a href="cpu.c_macros_ref.html#_X192ZXJpZnlfcGNwdV9wdHJfMA__"><span class="b">__verify_pcpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>                    \
<a name="178" /><span class="Maybe">     178:</span>     <span class="m">switch</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>                    \
<a name="179" /><span class="Maybe">     179:</span>     <span class="m">case</span> <span class="c">1</span><span class="f">:</span> <span class="b">pscr_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">1</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>            \
<a name="180" /><span class="Maybe">     180:</span>     <span class="m">case</span> <span class="c">2</span><span class="f">:</span> <span class="b">pscr_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">2</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>            \
<a name="181" /><span class="Maybe">     181:</span>     <span class="m">case</span> <span class="c">4</span><span class="f">:</span> <span class="b">pscr_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">4</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>            \
<a name="182" /><span class="Maybe">     182:</span>     <span class="m">case</span> <span class="c">8</span><span class="f">:</span> <span class="b">pscr_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">8</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>            \
<a name="183" /><span class="Maybe">     183:</span>     <span class="m">default</span><span class="f">:</span>                            \
<a name="184" /><span class="Maybe">     184:</span>         <span class="b">__bad_size_call_parameter</span><span class="f">(</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>            \
<a name="185" /><span class="Maybe">     185:</span>     <span class="f">}</span>                                \
<a name="186" /><span class="Maybe">     186:</span>     <span class="b">pscr_ret__</span><span class="f">;</span>                            \
<a name="187" /><span class="Maybe">     187:</span> <span class="f">}</span><span class="f">)</span>
<a name="188" /><span class="Maybe">     188:</span> 
<a name="189" /><span class="Maybe">     189:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">stem</span><span class="f">,</span> <span class="b">variable</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>            \
<a name="190" /><span class="Maybe">     190:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="191" /><span class="Maybe">     191:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span> <span class="b">pscr2_ret__</span><span class="f">;</span>                    \
<a name="192" /><span class="Maybe">     192:</span>     <a href="cpu.c_macros_ref.html#_X192ZXJpZnlfcGNwdV9wdHJfMA__"><span class="b">__verify_pcpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>                    \
<a name="193" /><span class="Maybe">     193:</span>     <span class="m">switch</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>                    \
<a name="194" /><span class="Maybe">     194:</span>     <span class="m">case</span> <span class="c">1</span><span class="f">:</span> <span class="b">pscr2_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">1</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="195" /><span class="Maybe">     195:</span>     <span class="m">case</span> <span class="c">2</span><span class="f">:</span> <span class="b">pscr2_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">2</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="196" /><span class="Maybe">     196:</span>     <span class="m">case</span> <span class="c">4</span><span class="f">:</span> <span class="b">pscr2_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">4</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="197" /><span class="Maybe">     197:</span>     <span class="m">case</span> <span class="c">8</span><span class="f">:</span> <span class="b">pscr2_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">8</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="198" /><span class="Maybe">     198:</span>     <span class="m">default</span><span class="f">:</span>                            \
<a name="199" /><span class="Maybe">     199:</span>         <span class="b">__bad_size_call_parameter</span><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>            \
<a name="200" /><span class="Maybe">     200:</span>     <span class="f">}</span>                                \
<a name="201" /><span class="Maybe">     201:</span>     <span class="b">pscr2_ret__</span><span class="f">;</span>                            \
<a name="202" /><span class="Maybe">     202:</span> <span class="f">}</span><span class="f">)</span>
<a name="203" /><span class="Maybe">     203:</span> 
<a name="204" /><span class="Maybe">     204:</span> <span class="k">/*</span>
<a name="205" /><span class="Maybe">     205:</span> <span class="k"> * Special handling for cmpxchg_double.  cmpxchg_double is passed two</span>
<a name="206" /><span class="Maybe">     206:</span> <span class="k"> * percpu variables.  The first has to be aligned to a double word</span>
<a name="207" /><span class="Maybe">     207:</span> <span class="k"> * boundary and the second has to follow directly thereafter.</span>
<a name="208" /><span class="Maybe">     208:</span> <span class="k"> * We enforce this on all architectures even if they don&apos;t support</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="k"> * a double cmpxchg instruction, since it&apos;s a cheap requirement, and it</span>
<a name="210" /><span class="Maybe">     210:</span> <span class="k"> * avoids breaking the requirement for architectures with the instruction.</span>
<a name="211" /><span class="Maybe">     211:</span> <span class="k"> */</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19wY3B1X2RvdWJsZV9jYWxsX3JldHVybl9ib29sXzA_"><span class="b">__pcpu_double_call_return_bool</span></a><span class="f">(</span><span class="b">stem</span><span class="f">,</span> <span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>        \
<a name="213" /><span class="Maybe">     213:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="214" /><span class="Maybe">     214:</span>     <span class="m">bool</span> <span class="b">pdcrb_ret__</span><span class="f">;</span>                        \
<a name="215" /><span class="Maybe">     215:</span>     <a href="cpu.c_macros_ref.html#_X192ZXJpZnlfcGNwdV9wdHJfMA__"><span class="b">__verify_pcpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="b">pcp1</span><span class="f">)</span><span class="f">;</span>                    \
<a name="216" /><span class="Maybe">     216:</span>     <a href="cpu.c_macros_ref.html#_QlVJTERfQlVHX09OXzA_"><span class="b">BUILD_BUG_ON</span></a><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">pcp1</span><span class="f">)</span> <span class="f">!=</span> <span class="m">sizeof</span><span class="f">(</span><span class="b">pcp2</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>            \
<a name="217" /><span class="Maybe">     217:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="f">&amp;</span><span class="b">pcp1</span><span class="f">)</span> <span class="f">%</span> <span class="f">(</span><span class="c">2</span> <span class="f">*</span> <span class="m">sizeof</span><span class="f">(</span><span class="b">pcp1</span><span class="f">)</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="218" /><span class="Maybe">     218:</span>     <a href="cpu.c_macros_ref.html#_Vk1fQlVHX09OXzA_"><span class="b">VM_BUG_ON</span></a><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="f">&amp;</span><span class="b">pcp2</span><span class="f">)</span> <span class="f">!=</span>                \
<a name="219" /><span class="Maybe">     219:</span>           <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">(</span><span class="f">&amp;</span><span class="b">pcp1</span><span class="f">)</span> <span class="f">+</span> <span class="m">sizeof</span><span class="f">(</span><span class="b">pcp1</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="220" /><span class="Maybe">     220:</span>     <span class="m">switch</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">pcp1</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>                        \
<a name="221" /><span class="Maybe">     221:</span>     <span class="m">case</span> <span class="c">1</span><span class="f">:</span> <span class="b">pdcrb_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">1</span><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="222" /><span class="Maybe">     222:</span>     <span class="m">case</span> <span class="c">2</span><span class="f">:</span> <span class="b">pdcrb_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">2</span><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="223" /><span class="Maybe">     223:</span>     <span class="m">case</span> <span class="c">4</span><span class="f">:</span> <span class="b">pdcrb_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">4</span><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="224" /><span class="Maybe">     224:</span>     <span class="m">case</span> <span class="c">8</span><span class="f">:</span> <span class="b">pdcrb_ret__</span> <span class="f">=</span> <span class="b">stem</span><span class="f">##</span><span class="c">8</span><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>    \
<a name="225" /><span class="Maybe">     225:</span>     <span class="m">default</span><span class="f">:</span>                            \
<a name="226" /><span class="Maybe">     226:</span>         <span class="b">__bad_size_call_parameter</span><span class="f">(</span><span class="f">)</span><span class="f">;</span> <span class="m">break</span><span class="f">;</span>            \
<a name="227" /><span class="Maybe">     227:</span>     <span class="f">}</span>                                \
<a name="228" /><span class="Maybe">     228:</span>     <span class="b">pdcrb_ret__</span><span class="f">;</span>                            \
<a name="229" /><span class="Maybe">     229:</span> <span class="f">}</span><span class="f">)</span>
<a name="230" /><span class="Maybe">     230:</span> 
<a name="231" /><span class="Maybe">     231:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">stem</span><span class="f">,</span> <span class="b">variable</span><span class="f">,</span> <span class="f">...</span><span class="f">)</span>                \
<a name="232" /><span class="Maybe">     232:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="233" /><span class="Maybe">     233:</span>     <a href="cpu.c_macros_ref.html#_X192ZXJpZnlfcGNwdV9wdHJfMA__"><span class="b">__verify_pcpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>                    \
<a name="234" /><span class="Maybe">     234:</span>     <span class="m">switch</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">variable</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>                    \
<a name="235" /><span class="Maybe">     235:</span>         <span class="m">case</span> <span class="c">1</span><span class="f">:</span> <span class="b">stem</span><span class="f">##</span><span class="c">1</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>        \
<a name="236" /><span class="Maybe">     236:</span>         <span class="m">case</span> <span class="c">2</span><span class="f">:</span> <span class="b">stem</span><span class="f">##</span><span class="c">2</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>        \
<a name="237" /><span class="Maybe">     237:</span>         <span class="m">case</span> <span class="c">4</span><span class="f">:</span> <span class="b">stem</span><span class="f">##</span><span class="c">4</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>        \
<a name="238" /><span class="Maybe">     238:</span>         <span class="m">case</span> <span class="c">8</span><span class="f">:</span> <span class="b">stem</span><span class="f">##</span><span class="c">8</span><span class="f">(</span><span class="b">variable</span><span class="f">,</span> <span class="b">__VA_ARGS__</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>        \
<a name="239" /><span class="Maybe">     239:</span>         <span class="m">default</span><span class="f">:</span>                         \
<a name="240" /><span class="Maybe">     240:</span>             <span class="b">__bad_size_call_parameter</span><span class="f">(</span><span class="f">)</span><span class="f">;</span><span class="m">break</span><span class="f">;</span>        \
<a name="241" /><span class="Maybe">     241:</span>     <span class="f">}</span>                                \
<a name="242" /><span class="Maybe">     242:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="243" /><span class="Maybe">     243:</span> 
<a name="244" /><span class="Maybe">     244:</span> <span class="k">/*</span>
<a name="245" /><span class="Maybe">     245:</span> <span class="k"> * Optimized manipulation for memory allocated through the per cpu</span>
<a name="246" /><span class="Maybe">     246:</span> <span class="k"> * allocator or for addresses of per cpu variables.</span>
<a name="247" /><span class="Maybe">     247:</span> <span class="k"> *</span>
<a name="248" /><span class="Maybe">     248:</span> <span class="k"> * These operation guarantee exclusivity of access for other operations</span>
<a name="249" /><span class="Maybe">     249:</span> <span class="k"> * on the *same* processor. The assumption is that per cpu data is only</span>
<a name="250" /><span class="Maybe">     250:</span> <span class="k"> * accessed by a single processor instance (the current one).</span>
<a name="251" /><span class="Maybe">     251:</span> <span class="k"> *</span>
<a name="252" /><span class="Maybe">     252:</span> <span class="k"> * The first group is used for accesses that must be done in a</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="k"> * preemption safe way since we know that the context is not preempt</span>
<a name="254" /><span class="Maybe">     254:</span> <span class="k"> * safe. Interrupts may occur. If the interrupt modifies the variable</span>
<a name="255" /><span class="Maybe">     255:</span> <span class="k"> * too then RMW actions will not be reliable.</span>
<a name="256" /><span class="Maybe">     256:</span> <span class="k"> *</span>
<a name="257" /><span class="Maybe">     257:</span> <span class="k"> * The arch code can provide optimized functions in two ways:</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="k"> *</span>
<a name="259" /><span class="Maybe">     259:</span> <span class="k"> * 1. Override the function completely. F.e. define this_cpu_add().</span>
<a name="260" /><span class="Maybe">     260:</span> <span class="k"> *    The arch must then ensure that the various scalar format passed</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="k"> *    are handled correctly.</span>
<a name="262" /><span class="Maybe">     262:</span> <span class="k"> *</span>
<a name="263" /><span class="Maybe">     263:</span> <span class="k"> * 2. Provide functions for certain scalar sizes. F.e. provide</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="k"> *    this_cpu_add_2() to provide per cpu atomic operations for 2 byte</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="k"> *    sized RMW actions. If arch code does not provide operations for</span>
<a name="266" /><span class="Maybe">     266:</span> <span class="k"> *    a scalar size then the fallback in the generic code will be</span>
<a name="267" /><span class="Maybe">     267:</span> <span class="k"> *    used.</span>
<a name="268" /><span class="Maybe">     268:</span> <span class="k"> */</span>
<a name="269" /><span class="Maybe">     269:</span> 
<a name="270" /><span class="Maybe">     270:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfcmVhZF8w"><span class="b">_this_cpu_generic_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>                    \
<a name="271" /><span class="Maybe">     271:</span> <span class="f">(</span><span class="f">{</span>    <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="272" /><span class="Maybe">     272:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9kaXNhYmxlXzA_"><span class="b">preempt_disable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="273" /><span class="Maybe">     273:</span>     <span class="b">ret__</span> <span class="f">=</span> <span class="f">*</span><a href="cpu.c_macros_noref.html#_dGhpc19jcHVfcHRyXzA_"><span class="b">this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>                    \
<a name="274" /><span class="Maybe">     274:</span>     <a href="cpu.c_macros_ref.html#_cHJlZW1wdF9lbmFibGVfMA__"><span class="b">preempt_enable</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="275" /><span class="Maybe">     275:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="276" /><span class="Maybe">     276:</span> <span class="f">}</span><span class="f">)</span>
<a name="277" /><span class="Maybe">     277:</span> 
<a name="278" /><span class="Maybe">     278:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8w"><span class="b">this_cpu_read</span></a>
<a name="279" /><span class="False">     279:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8xXzA_"><span class="b">this_cpu_read_1</span></a>
<a name="280" /><span class="False">     280:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8xXzA_"><span class="b">this_cpu_read_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfcmVhZF8w"><span class="b">_this_cpu_generic_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>
<a name="281" /><span class="Maybe">     281:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="282" /><span class="False">     282:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8yXzA_"><span class="b">this_cpu_read_2</span></a>
<a name="283" /><span class="False">     283:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8yXzA_"><span class="b">this_cpu_read_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfcmVhZF8w"><span class="b">_this_cpu_generic_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>
<a name="284" /><span class="Maybe">     284:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="285" /><span class="False">     285:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF80XzA_"><span class="b">this_cpu_read_4</span></a>
<a name="286" /><span class="False">     286:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF80XzA_"><span class="b">this_cpu_read_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfcmVhZF8w"><span class="b">_this_cpu_generic_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>
<a name="287" /><span class="Maybe">     287:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="288" /><span class="False">     288:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF84XzA_"><span class="b">this_cpu_read_8</span></a>
<a name="289" /><span class="False">     289:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF84XzA_"><span class="b">this_cpu_read_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfcmVhZF8w"><span class="b">_this_cpu_generic_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>
<a name="290" /><span class="Maybe">     290:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="291" /><span class="Maybe">     291:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfcmVhZF8w"><span class="b">this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm5fMA__"><span class="b">__pcpu_size_call_return</span></a><span class="f">(</span><span class="b">this_cpu_read_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span>
<a name="292" /><span class="Maybe">     292:</span> <span class="f">#</span><span class="n">endif</span>
<a name="293" /><span class="Maybe">     293:</span> 
<a name="294" /><span class="Maybe">     294:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">,</span> <span class="b">op</span><span class="f">)</span>                \
<a name="295" /><span class="Maybe">     295:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="296" /><span class="Maybe">     296:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>                        \
<a name="297" /><span class="Maybe">     297:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="298" /><span class="Maybe">     298:</span>     <span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span> <span class="b">op</span> <span class="b">val</span><span class="f">;</span>                    \
<a name="299" /><span class="Maybe">     299:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="300" /><span class="Maybe">     300:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="301" /><span class="Maybe">     301:</span> 
<a name="302" /><span class="Maybe">     302:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMA__"><span class="b">this_cpu_write</span></a>
<a name="303" /><span class="False">     303:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMV8w"><span class="b">this_cpu_write_1</span></a>
<a name="304" /><span class="False">     304:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMV8w"><span class="b">this_cpu_write_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="305" /><span class="Maybe">     305:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="306" /><span class="False">     306:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMl8w"><span class="b">this_cpu_write_2</span></a>
<a name="307" /><span class="False">     307:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMl8w"><span class="b">this_cpu_write_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="308" /><span class="Maybe">     308:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="309" /><span class="False">     309:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfNF8w"><span class="b">this_cpu_write_4</span></a>
<a name="310" /><span class="False">     310:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfNF8w"><span class="b">this_cpu_write_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="311" /><span class="Maybe">     311:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="312" /><span class="False">     312:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfOF8w"><span class="b">this_cpu_write_8</span></a>
<a name="313" /><span class="False">     313:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfOF8w"><span class="b">this_cpu_write_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="314" /><span class="Maybe">     314:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="315" /><span class="Maybe">     315:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfd3JpdGVfMA__"><span class="b">this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">this_cpu_write_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="316" /><span class="Maybe">     316:</span> <span class="f">#</span><span class="n">endif</span>
<a name="317" /><span class="Maybe">     317:</span> 
<a name="318" /><span class="Maybe">     318:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzA_"><span class="b">this_cpu_add</span></a>
<a name="319" /><span class="False">     319:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzFfMA__"><span class="b">this_cpu_add_1</span></a>
<a name="320" /><span class="False">     320:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzFfMA__"><span class="b">this_cpu_add_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="321" /><span class="Maybe">     321:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="322" /><span class="False">     322:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzJfMA__"><span class="b">this_cpu_add_2</span></a>
<a name="323" /><span class="False">     323:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzJfMA__"><span class="b">this_cpu_add_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="324" /><span class="Maybe">     324:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="325" /><span class="False">     325:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzRfMA__"><span class="b">this_cpu_add_4</span></a>
<a name="326" /><span class="False">     326:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzRfMA__"><span class="b">this_cpu_add_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="327" /><span class="Maybe">     327:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="328" /><span class="False">     328:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzhfMA__"><span class="b">this_cpu_add_8</span></a>
<a name="329" /><span class="False">     329:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzhfMA__"><span class="b">this_cpu_add_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="330" /><span class="Maybe">     330:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="331" /><span class="Maybe">     331:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzA_"><span class="b">this_cpu_add</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">this_cpu_add_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="f">#</span><span class="n">endif</span>
<a name="333" /><span class="Maybe">     333:</span> 
<a name="334" /><span class="Maybe">     334:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfc3ViXzA_"><span class="b">this_cpu_sub</span></a>
<a name="335" /><span class="Maybe">     335:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfc3ViXzA_"><span class="b">this_cpu_sub</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzA_"><span class="b">this_cpu_add</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">-</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="336" /><span class="Maybe">     336:</span> <span class="f">#</span><span class="n">endif</span>
<a name="337" /><span class="Maybe">     337:</span> 
<a name="338" /><span class="Maybe">     338:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfaW5jXzA_"><span class="b">this_cpu_inc</span></a>
<a name="339" /><span class="Maybe">     339:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfaW5jXzA_"><span class="b">this_cpu_inc</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkXzA_"><span class="b">this_cpu_add</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="340" /><span class="Maybe">     340:</span> <span class="f">#</span><span class="n">endif</span>
<a name="341" /><span class="Maybe">     341:</span> 
<a name="342" /><span class="Maybe">     342:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfZGVjXzA_"><span class="b">this_cpu_dec</span></a>
<a name="343" /><span class="Maybe">     343:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfZGVjXzA_"><span class="b">this_cpu_dec</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfc3ViXzA_"><span class="b">this_cpu_sub</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="344" /><span class="Maybe">     344:</span> <span class="f">#</span><span class="n">endif</span>
<a name="345" /><span class="Maybe">     345:</span> 
<a name="346" /><span class="Maybe">     346:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzA_"><span class="b">this_cpu_and</span></a>
<a name="347" /><span class="False">     347:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzFfMA__"><span class="b">this_cpu_and_1</span></a>
<a name="348" /><span class="False">     348:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzFfMA__"><span class="b">this_cpu_and_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="349" /><span class="Maybe">     349:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="350" /><span class="False">     350:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzJfMA__"><span class="b">this_cpu_and_2</span></a>
<a name="351" /><span class="False">     351:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzJfMA__"><span class="b">this_cpu_and_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="352" /><span class="Maybe">     352:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="353" /><span class="False">     353:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzRfMA__"><span class="b">this_cpu_and_4</span></a>
<a name="354" /><span class="False">     354:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzRfMA__"><span class="b">this_cpu_and_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="355" /><span class="Maybe">     355:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="356" /><span class="False">     356:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzhfMA__"><span class="b">this_cpu_and_8</span></a>
<a name="357" /><span class="False">     357:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzhfMA__"><span class="b">this_cpu_and_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="358" /><span class="Maybe">     358:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="359" /><span class="Maybe">     359:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYW5kXzA_"><span class="b">this_cpu_and</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">this_cpu_and_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="360" /><span class="Maybe">     360:</span> <span class="f">#</span><span class="n">endif</span>
<a name="361" /><span class="Maybe">     361:</span> 
<a name="362" /><span class="Maybe">     362:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMA__"><span class="b">this_cpu_or</span></a>
<a name="363" /><span class="False">     363:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMV8w"><span class="b">this_cpu_or_1</span></a>
<a name="364" /><span class="False">     364:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMV8w"><span class="b">this_cpu_or_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="365" /><span class="Maybe">     365:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="366" /><span class="False">     366:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMl8w"><span class="b">this_cpu_or_2</span></a>
<a name="367" /><span class="False">     367:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMl8w"><span class="b">this_cpu_or_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="368" /><span class="Maybe">     368:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="369" /><span class="False">     369:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfNF8w"><span class="b">this_cpu_or_4</span></a>
<a name="370" /><span class="False">     370:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfNF8w"><span class="b">this_cpu_or_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="371" /><span class="Maybe">     371:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="372" /><span class="False">     372:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfOF8w"><span class="b">this_cpu_or_8</span></a>
<a name="373" /><span class="False">     373:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfOF8w"><span class="b">this_cpu_or_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfdG9fb3BfMA__"><span class="b">_this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="374" /><span class="Maybe">     374:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="375" /><span class="Maybe">     375:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfb3JfMA__"><span class="b">this_cpu_or</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">this_cpu_or_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="376" /><span class="Maybe">     376:</span> <span class="f">#</span><span class="n">endif</span>
<a name="377" /><span class="Maybe">     377:</span> 
<a name="378" /><span class="Maybe">     378:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfYWRkX3JldHVybl8w"><span class="b">_this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>                \
<a name="379" /><span class="Maybe">     379:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="380" /><span class="Maybe">     380:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="381" /><span class="Maybe">     381:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>                        \
<a name="382" /><span class="Maybe">     382:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="383" /><span class="Maybe">     383:</span>     <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span><span class="f">;</span>                    \
<a name="384" /><span class="Maybe">     384:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                    \
<a name="385" /><span class="Maybe">     385:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="386" /><span class="Maybe">     386:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="387" /><span class="Maybe">     387:</span> <span class="f">}</span><span class="f">)</span>
<a name="388" /><span class="Maybe">     388:</span> 
<a name="389" /><span class="Maybe">     389:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8w"><span class="b">this_cpu_add_return</span></a>
<a name="390" /><span class="False">     390:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8xXzA_"><span class="b">this_cpu_add_return_1</span></a>
<a name="391" /><span class="False">     391:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8xXzA_"><span class="b">this_cpu_add_return_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfYWRkX3JldHVybl8w"><span class="b">_this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="392" /><span class="Maybe">     392:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="393" /><span class="False">     393:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8yXzA_"><span class="b">this_cpu_add_return_2</span></a>
<a name="394" /><span class="False">     394:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8yXzA_"><span class="b">this_cpu_add_return_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfYWRkX3JldHVybl8w"><span class="b">_this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="395" /><span class="Maybe">     395:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="396" /><span class="False">     396:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl80XzA_"><span class="b">this_cpu_add_return_4</span></a>
<a name="397" /><span class="False">     397:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl80XzA_"><span class="b">this_cpu_add_return_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfYWRkX3JldHVybl8w"><span class="b">_this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="398" /><span class="Maybe">     398:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="399" /><span class="False">     399:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl84XzA_"><span class="b">this_cpu_add_return_8</span></a>
<a name="400" /><span class="False">     400:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl84XzA_"><span class="b">this_cpu_add_return_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfYWRkX3JldHVybl8w"><span class="b">_this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="401" /><span class="Maybe">     401:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="402" /><span class="Maybe">     402:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8w"><span class="b">this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">this_cpu_add_return_</span><span class="f">,</span> <span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="403" /><span class="Maybe">     403:</span> <span class="f">#</span><span class="n">endif</span>
<a name="404" /><span class="Maybe">     404:</span> 
<a name="405" /><span class="Maybe">     405:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dGhpc19jcHVfc3ViX3JldHVybl8w"><span class="b">this_cpu_sub_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8w"><span class="b">this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="f">-</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="406" /><span class="Maybe">     406:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dGhpc19jcHVfaW5jX3JldHVybl8w"><span class="b">this_cpu_inc_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8w"><span class="b">this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="407" /><span class="Maybe">     407:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dGhpc19jcHVfZGVjX3JldHVybl8w"><span class="b">this_cpu_dec_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfYWRkX3JldHVybl8w"><span class="b">this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="408" /><span class="Maybe">     408:</span> 
<a name="409" /><span class="Maybe">     409:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfeGNoZ18w"><span class="b">_this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>                \
<a name="410" /><span class="Maybe">     410:</span> <span class="f">(</span><span class="f">{</span>    <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="411" /><span class="Maybe">     411:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>                        \
<a name="412" /><span class="Maybe">     412:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="413" /><span class="Maybe">     413:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                    \
<a name="414" /><span class="Maybe">     414:</span>     <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span><span class="f">;</span>                    \
<a name="415" /><span class="Maybe">     415:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="416" /><span class="Maybe">     416:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="417" /><span class="Maybe">     417:</span> <span class="f">}</span><span class="f">)</span>
<a name="418" /><span class="Maybe">     418:</span> 
<a name="419" /><span class="Maybe">     419:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18w"><span class="b">this_cpu_xchg</span></a>
<a name="420" /><span class="False">     420:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18xXzA_"><span class="b">this_cpu_xchg_1</span></a>
<a name="421" /><span class="False">     421:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18xXzA_"><span class="b">this_cpu_xchg_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfeGNoZ18w"><span class="b">_this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="422" /><span class="Maybe">     422:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="423" /><span class="False">     423:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18yXzA_"><span class="b">this_cpu_xchg_2</span></a>
<a name="424" /><span class="False">     424:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18yXzA_"><span class="b">this_cpu_xchg_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfeGNoZ18w"><span class="b">_this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="425" /><span class="Maybe">     425:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="426" /><span class="False">     426:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ180XzA_"><span class="b">this_cpu_xchg_4</span></a>
<a name="427" /><span class="False">     427:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ180XzA_"><span class="b">this_cpu_xchg_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfeGNoZ18w"><span class="b">_this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="428" /><span class="Maybe">     428:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="429" /><span class="False">     429:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ184XzA_"><span class="b">this_cpu_xchg_8</span></a>
<a name="430" /><span class="False">     430:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ184XzA_"><span class="b">this_cpu_xchg_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfeGNoZ18w"><span class="b">_this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="431" /><span class="Maybe">     431:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="432" /><span class="Maybe">     432:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfeGNoZ18w"><span class="b">this_cpu_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    \
<a name="433" /><span class="Maybe">     433:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">this_cpu_xchg_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="434" /><span class="Maybe">     434:</span> <span class="f">#</span><span class="n">endif</span>
<a name="435" /><span class="Maybe">     435:</span> 
<a name="436" /><span class="Maybe">     436:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ18w"><span class="b">_this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>            \
<a name="437" /><span class="Maybe">     437:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="438" /><span class="Maybe">     438:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="439" /><span class="Maybe">     439:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>                        \
<a name="440" /><span class="Maybe">     440:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="441" /><span class="Maybe">     441:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                    \
<a name="442" /><span class="Maybe">     442:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">ret__</span> <span class="f">==</span> <span class="f">(</span><span class="b">oval</span><span class="f">)</span><span class="f">)</span>                        \
<a name="443" /><span class="Maybe">     443:</span>         <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span><span class="f">;</span>                \
<a name="444" /><span class="Maybe">     444:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="445" /><span class="Maybe">     445:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="446" /><span class="Maybe">     446:</span> <span class="f">}</span><span class="f">)</span>
<a name="447" /><span class="Maybe">     447:</span> 
<a name="448" /><span class="Maybe">     448:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18w"><span class="b">this_cpu_cmpxchg</span></a>
<a name="449" /><span class="False">     449:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18xXzA_"><span class="b">this_cpu_cmpxchg_1</span></a>
<a name="450" /><span class="False">     450:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18xXzA_"><span class="b">this_cpu_cmpxchg_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ18w"><span class="b">_this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="451" /><span class="Maybe">     451:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="452" /><span class="False">     452:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18yXzA_"><span class="b">this_cpu_cmpxchg_2</span></a>
<a name="453" /><span class="False">     453:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18yXzA_"><span class="b">this_cpu_cmpxchg_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ18w"><span class="b">_this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="454" /><span class="Maybe">     454:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="455" /><span class="False">     455:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ180XzA_"><span class="b">this_cpu_cmpxchg_4</span></a>
<a name="456" /><span class="False">     456:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ180XzA_"><span class="b">this_cpu_cmpxchg_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ18w"><span class="b">_this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="457" /><span class="Maybe">     457:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="458" /><span class="False">     458:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ184XzA_"><span class="b">this_cpu_cmpxchg_8</span></a>
<a name="459" /><span class="False">     459:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ184XzA_"><span class="b">this_cpu_cmpxchg_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ18w"><span class="b">_this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="460" /><span class="Maybe">     460:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="461" /><span class="Maybe">     461:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ18w"><span class="b">this_cpu_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    \
<a name="462" /><span class="Maybe">     462:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">this_cpu_cmpxchg_</span><span class="f">,</span> <span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="463" /><span class="Maybe">     463:</span> <span class="f">#</span><span class="n">endif</span>
<a name="464" /><span class="Maybe">     464:</span> 
<a name="465" /><span class="Maybe">     465:</span> <span class="k">/*</span>
<a name="466" /><span class="Maybe">     466:</span> <span class="k"> * cmpxchg_double replaces two adjacent scalars at once.  The first</span>
<a name="467" /><span class="Maybe">     467:</span> <span class="k"> * two parameters are per cpu variables which have to be of the same</span>
<a name="468" /><span class="Maybe">     468:</span> <span class="k"> * size.  A truth value is returned to indicate success or failure</span>
<a name="469" /><span class="Maybe">     469:</span> <span class="k"> * (since a double register result is difficult to handle).  There is</span>
<a name="470" /><span class="Maybe">     470:</span> <span class="k"> * very limited hardware support for these operations, so only certain</span>
<a name="471" /><span class="Maybe">     471:</span> <span class="k"> * sizes may work.</span>
<a name="472" /><span class="Maybe">     472:</span> <span class="k"> */</span>
<a name="473" /><span class="Maybe">     473:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ19kb3VibGVfMA__"><span class="b">_this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="474" /><span class="Maybe">     474:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="475" /><span class="Maybe">     475:</span>     <span class="m">int</span> <span class="b">ret__</span><span class="f">;</span>                            \
<a name="476" /><span class="Maybe">     476:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>                        \
<a name="477" /><span class="Maybe">     477:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9zYXZlXzA_"><span class="b">raw_local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="478" /><span class="Maybe">     478:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span>        \
<a name="479" /><span class="Maybe">     479:</span>             <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span><span class="f">;</span>            \
<a name="480" /><span class="Maybe">     480:</span>     <a href="cpu.c_macros_ref.html#_cmF3X2xvY2FsX2lycV9yZXN0b3JlXzA_"><span class="b">raw_local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>                    \
<a name="481" /><span class="Maybe">     481:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="482" /><span class="Maybe">     482:</span> <span class="f">}</span><span class="f">)</span>
<a name="483" /><span class="Maybe">     483:</span> 
<a name="484" /><span class="Maybe">     484:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMA__"><span class="b">this_cpu_cmpxchg_double</span></a>
<a name="485" /><span class="Maybe">     485:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMV8w"><span class="b">this_cpu_cmpxchg_double_1</span></a>
<a name="486" /><span class="Maybe">     486:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMV8w"><span class="b">this_cpu_cmpxchg_double_1</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="487" /><span class="Maybe">     487:</span>     <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ19kb3VibGVfMA__"><span class="b">_this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="488" /><span class="Maybe">     488:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="489" /><span class="Maybe">     489:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMl8w"><span class="b">this_cpu_cmpxchg_double_2</span></a>
<a name="490" /><span class="Maybe">     490:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMl8w"><span class="b">this_cpu_cmpxchg_double_2</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="491" /><span class="Maybe">     491:</span>     <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ19kb3VibGVfMA__"><span class="b">_this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="492" /><span class="Maybe">     492:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="493" /><span class="False">     493:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfNF8w"><span class="b">this_cpu_cmpxchg_double_4</span></a>
<a name="494" /><span class="False">     494:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfNF8w"><span class="b">this_cpu_cmpxchg_double_4</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="495" /><span class="False">     495:</span>     <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ19kb3VibGVfMA__"><span class="b">_this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="496" /><span class="Maybe">     496:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="497" /><span class="False">     497:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfOF8w"><span class="b">this_cpu_cmpxchg_double_8</span></a>
<a name="498" /><span class="False">     498:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfOF8w"><span class="b">this_cpu_cmpxchg_double_8</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="499" /><span class="False">     499:</span>     <a href="cpu.c_macros_noref.html#_X3RoaXNfY3B1X2dlbmVyaWNfY21weGNoZ19kb3VibGVfMA__"><span class="b">_this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="500" /><span class="Maybe">     500:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="501" /><span class="Maybe">     501:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGhpc19jcHVfY21weGNoZ19kb3VibGVfMA__"><span class="b">this_cpu_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="502" /><span class="Maybe">     502:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X2RvdWJsZV9jYWxsX3JldHVybl9ib29sXzA_"><span class="b">__pcpu_double_call_return_bool</span></a><span class="f">(</span><span class="b">this_cpu_cmpxchg_double_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp2</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">oval1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">oval2</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">nval1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">nval2</span><span class="f">)</span><span class="f">)</span>
<a name="503" /><span class="Maybe">     503:</span> <span class="f">#</span><span class="n">endif</span>
<a name="504" /><span class="Maybe">     504:</span> 
<a name="505" /><span class="Maybe">     505:</span> <span class="k">/*</span>
<a name="506" /><span class="Maybe">     506:</span> <span class="k"> * Generic percpu operations for context that are safe from preemption/interrupts.</span>
<a name="507" /><span class="Maybe">     507:</span> <span class="k"> * Either we do not care about races or the caller has the</span>
<a name="508" /><span class="Maybe">     508:</span> <span class="k"> * responsibility of handling preemption/interrupt issues. Arch code can still</span>
<a name="509" /><span class="Maybe">     509:</span> <span class="k"> * override these instructions since the arch per cpu code may be more</span>
<a name="510" /><span class="Maybe">     510:</span> <span class="k"> * efficient and may actually get race freeness for free (that is the</span>
<a name="511" /><span class="Maybe">     511:</span> <span class="k"> * case for x86 for example).</span>
<a name="512" /><span class="Maybe">     512:</span> <span class="k"> *</span>
<a name="513" /><span class="Maybe">     513:</span> <span class="k"> * If there is no other protection through preempt disable and/or</span>
<a name="514" /><span class="Maybe">     514:</span> <span class="k"> * disabling interupts then one of these RMW operations can show unexpected</span>
<a name="515" /><span class="Maybe">     515:</span> <span class="k"> * behavior because the execution thread was rescheduled on another processor</span>
<a name="516" /><span class="Maybe">     516:</span> <span class="k"> * or an interrupt occurred and the same percpu variable was modified from</span>
<a name="517" /><span class="Maybe">     517:</span> <span class="k"> * the interrupt context.</span>
<a name="518" /><span class="Maybe">     518:</span> <span class="k"> */</span>
<a name="519" /><span class="Maybe">     519:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a>
<a name="520" /><span class="False">     520:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzFfMA__"><span class="b">__this_cpu_read_1</span></a>
<a name="521" /><span class="False">     521:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzFfMA__"><span class="b">__this_cpu_read_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <span class="f">(</span><span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="522" /><span class="Maybe">     522:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="523" /><span class="False">     523:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzJfMA__"><span class="b">__this_cpu_read_2</span></a>
<a name="524" /><span class="False">     524:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzJfMA__"><span class="b">__this_cpu_read_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <span class="f">(</span><span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="525" /><span class="Maybe">     525:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="526" /><span class="False">     526:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzRfMA__"><span class="b">__this_cpu_read_4</span></a>
<a name="527" /><span class="False">     527:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzRfMA__"><span class="b">__this_cpu_read_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <span class="f">(</span><span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="528" /><span class="Maybe">     528:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="529" /><span class="False">     529:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzhfMA__"><span class="b">__this_cpu_read_8</span></a>
<a name="530" /><span class="False">     530:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzhfMA__"><span class="b">__this_cpu_read_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <span class="f">(</span><span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="531" /><span class="Maybe">     531:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="532" /><span class="Maybe">     532:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm5fMA__"><span class="b">__pcpu_size_call_return</span></a><span class="f">(</span><span class="b">__this_cpu_read_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span>
<a name="533" /><span class="Maybe">     533:</span> <span class="f">#</span><span class="n">endif</span>
<a name="534" /><span class="Maybe">     534:</span> 
<a name="535" /><span class="Maybe">     535:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">,</span> <span class="b">op</span><span class="f">)</span>                \
<a name="536" /><span class="Maybe">     536:</span> <span class="m">do</span> <span class="f">{</span>                                    \
<a name="537" /><span class="Maybe">     537:</span>     <span class="f">*</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9wdHJfMA__"><span class="b">__this_cpu_ptr</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span> <span class="b">op</span> <span class="b">val</span><span class="f">;</span>                    \
<a name="538" /><span class="Maybe">     538:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="539" /><span class="Maybe">     539:</span> 
<a name="540" /><span class="Maybe">     540:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a>
<a name="541" /><span class="False">     541:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8xXzA_"><span class="b">__this_cpu_write_1</span></a>
<a name="542" /><span class="False">     542:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8xXzA_"><span class="b">__this_cpu_write_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="543" /><span class="Maybe">     543:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="544" /><span class="False">     544:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8yXzA_"><span class="b">__this_cpu_write_2</span></a>
<a name="545" /><span class="False">     545:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8yXzA_"><span class="b">__this_cpu_write_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="546" /><span class="Maybe">     546:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="547" /><span class="False">     547:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV80XzA_"><span class="b">__this_cpu_write_4</span></a>
<a name="548" /><span class="False">     548:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV80XzA_"><span class="b">__this_cpu_write_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="549" /><span class="Maybe">     549:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="550" /><span class="False">     550:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV84XzA_"><span class="b">__this_cpu_write_8</span></a>
<a name="551" /><span class="False">     551:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV84XzA_"><span class="b">__this_cpu_write_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">=</span><span class="f">)</span>
<a name="552" /><span class="Maybe">     552:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="553" /><span class="Maybe">     553:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">__this_cpu_write_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="554" /><span class="Maybe">     554:</span> <span class="f">#</span><span class="n">endif</span>
<a name="555" /><span class="Maybe">     555:</span> 
<a name="556" /><span class="Maybe">     556:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a>
<a name="557" /><span class="False">     557:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMV8w"><span class="b">__this_cpu_add_1</span></a>
<a name="558" /><span class="False">     558:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMV8w"><span class="b">__this_cpu_add_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="559" /><span class="Maybe">     559:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="560" /><span class="False">     560:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMl8w"><span class="b">__this_cpu_add_2</span></a>
<a name="561" /><span class="False">     561:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMl8w"><span class="b">__this_cpu_add_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="562" /><span class="Maybe">     562:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="563" /><span class="False">     563:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfNF8w"><span class="b">__this_cpu_add_4</span></a>
<a name="564" /><span class="False">     564:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfNF8w"><span class="b">__this_cpu_add_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="565" /><span class="Maybe">     565:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="566" /><span class="False">     566:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfOF8w"><span class="b">__this_cpu_add_8</span></a>
<a name="567" /><span class="False">     567:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfOF8w"><span class="b">__this_cpu_add_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">+=</span><span class="f">)</span>
<a name="568" /><span class="Maybe">     568:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="569" /><span class="Maybe">     569:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">__this_cpu_add_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="570" /><span class="Maybe">     570:</span> <span class="f">#</span><span class="n">endif</span>
<a name="571" /><span class="Maybe">     571:</span> 
<a name="572" /><span class="Maybe">     572:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9zdWJfMA__"><span class="b">__this_cpu_sub</span></a>
<a name="573" /><span class="Maybe">     573:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9zdWJfMA__"><span class="b">__this_cpu_sub</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">-</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="574" /><span class="Maybe">     574:</span> <span class="f">#</span><span class="n">endif</span>
<a name="575" /><span class="Maybe">     575:</span> 
<a name="576" /><span class="Maybe">     576:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9pbmNfMA__"><span class="b">__this_cpu_inc</span></a>
<a name="577" /><span class="Maybe">     577:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9pbmNfMA__"><span class="b">__this_cpu_inc</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="578" /><span class="Maybe">     578:</span> <span class="f">#</span><span class="n">endif</span>
<a name="579" /><span class="Maybe">     579:</span> 
<a name="580" /><span class="Maybe">     580:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9kZWNfMA__"><span class="b">__this_cpu_dec</span></a>
<a name="581" /><span class="Maybe">     581:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9kZWNfMA__"><span class="b">__this_cpu_dec</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9zdWJfMA__"><span class="b">__this_cpu_sub</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="582" /><span class="Maybe">     582:</span> <span class="f">#</span><span class="n">endif</span>
<a name="583" /><span class="Maybe">     583:</span> 
<a name="584" /><span class="Maybe">     584:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMA__"><span class="b">__this_cpu_and</span></a>
<a name="585" /><span class="False">     585:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMV8w"><span class="b">__this_cpu_and_1</span></a>
<a name="586" /><span class="False">     586:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMV8w"><span class="b">__this_cpu_and_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="587" /><span class="Maybe">     587:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="588" /><span class="False">     588:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMl8w"><span class="b">__this_cpu_and_2</span></a>
<a name="589" /><span class="False">     589:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMl8w"><span class="b">__this_cpu_and_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="590" /><span class="Maybe">     590:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="591" /><span class="False">     591:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfNF8w"><span class="b">__this_cpu_and_4</span></a>
<a name="592" /><span class="False">     592:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfNF8w"><span class="b">__this_cpu_and_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="593" /><span class="Maybe">     593:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="594" /><span class="False">     594:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfOF8w"><span class="b">__this_cpu_and_8</span></a>
<a name="595" /><span class="False">     595:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfOF8w"><span class="b">__this_cpu_and_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;=</span><span class="f">)</span>
<a name="596" /><span class="Maybe">     596:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="597" /><span class="Maybe">     597:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hbmRfMA__"><span class="b">__this_cpu_and</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">__this_cpu_and_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="598" /><span class="Maybe">     598:</span> <span class="f">#</span><span class="n">endif</span>
<a name="599" /><span class="Maybe">     599:</span> 
<a name="600" /><span class="Maybe">     600:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8w"><span class="b">__this_cpu_or</span></a>
<a name="601" /><span class="False">     601:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8xXzA_"><span class="b">__this_cpu_or_1</span></a>
<a name="602" /><span class="False">     602:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8xXzA_"><span class="b">__this_cpu_or_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="603" /><span class="Maybe">     603:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="604" /><span class="False">     604:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8yXzA_"><span class="b">__this_cpu_or_2</span></a>
<a name="605" /><span class="False">     605:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8yXzA_"><span class="b">__this_cpu_or_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="606" /><span class="Maybe">     606:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="607" /><span class="False">     607:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl80XzA_"><span class="b">__this_cpu_or_4</span></a>
<a name="608" /><span class="False">     608:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl80XzA_"><span class="b">__this_cpu_or_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="609" /><span class="Maybe">     609:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="610" /><span class="False">     610:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl84XzA_"><span class="b">__this_cpu_or_8</span></a>
<a name="611" /><span class="False">     611:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl84XzA_"><span class="b">__this_cpu_or_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3RvX29wXzA_"><span class="b">__this_cpu_generic_to_op</span></a><span class="f">(</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">,</span> <span class="f">|=</span><span class="f">)</span>
<a name="612" /><span class="Maybe">     612:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="613" /><span class="Maybe">     613:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9vcl8w"><span class="b">__this_cpu_or</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19wY3B1X3NpemVfY2FsbF8w"><span class="b">__pcpu_size_call</span></a><span class="f">(</span><span class="b">__this_cpu_or_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="614" /><span class="Maybe">     614:</span> <span class="f">#</span><span class="n">endif</span>
<a name="615" /><span class="Maybe">     615:</span> 
<a name="616" /><span class="Maybe">     616:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2FkZF9yZXR1cm5fMA__"><span class="b">__this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>                \
<a name="617" /><span class="Maybe">     617:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="618" /><span class="Maybe">     618:</span>     <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfMA__"><span class="b">__this_cpu_add</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span><span class="f">;</span>                    \
<a name="619" /><span class="Maybe">     619:</span>     <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                        \
<a name="620" /><span class="Maybe">     620:</span> <span class="f">}</span><span class="f">)</span>
<a name="621" /><span class="Maybe">     621:</span> 
<a name="622" /><span class="Maybe">     622:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzA_"><span class="b">__this_cpu_add_return</span></a>
<a name="623" /><span class="False">     623:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzFfMA__"><span class="b">__this_cpu_add_return_1</span></a>
<a name="624" /><span class="False">     624:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzFfMA__"><span class="b">__this_cpu_add_return_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2FkZF9yZXR1cm5fMA__"><span class="b">__this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="625" /><span class="Maybe">     625:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="626" /><span class="False">     626:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzJfMA__"><span class="b">__this_cpu_add_return_2</span></a>
<a name="627" /><span class="False">     627:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzJfMA__"><span class="b">__this_cpu_add_return_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2FkZF9yZXR1cm5fMA__"><span class="b">__this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="628" /><span class="Maybe">     628:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="629" /><span class="False">     629:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzRfMA__"><span class="b">__this_cpu_add_return_4</span></a>
<a name="630" /><span class="False">     630:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzRfMA__"><span class="b">__this_cpu_add_return_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2FkZF9yZXR1cm5fMA__"><span class="b">__this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="631" /><span class="Maybe">     631:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="632" /><span class="False">     632:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzhfMA__"><span class="b">__this_cpu_add_return_8</span></a>
<a name="633" /><span class="False">     633:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzhfMA__"><span class="b">__this_cpu_add_return_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2FkZF9yZXR1cm5fMA__"><span class="b">__this_cpu_generic_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="634" /><span class="Maybe">     634:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="635" /><span class="Maybe">     635:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzA_"><span class="b">__this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    \
<a name="636" /><span class="Maybe">     636:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">__this_cpu_add_return_</span><span class="f">,</span> <span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>
<a name="637" /><span class="Maybe">     637:</span> <span class="f">#</span><span class="n">endif</span>
<a name="638" /><span class="Maybe">     638:</span> 
<a name="639" /><span class="Maybe">     639:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9zdWJfcmV0dXJuXzA_"><span class="b">__this_cpu_sub_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">val</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzA_"><span class="b">__this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="f">-</span><span class="f">(</span><span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">)</span><span class="f">(</span><span class="b">val</span><span class="f">)</span><span class="f">)</span>
<a name="640" /><span class="Maybe">     640:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9pbmNfcmV0dXJuXzA_"><span class="b">__this_cpu_inc_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzA_"><span class="b">__this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="c">1</span><span class="f">)</span>
<a name="641" /><span class="Maybe">     641:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9kZWNfcmV0dXJuXzA_"><span class="b">__this_cpu_dec_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9hZGRfcmV0dXJuXzA_"><span class="b">__this_cpu_add_return</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="f">-</span><span class="c">1</span><span class="f">)</span>
<a name="642" /><span class="Maybe">     642:</span> 
<a name="643" /><span class="Maybe">     643:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3hjaGdfMA__"><span class="b">__this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>                \
<a name="644" /><span class="Maybe">     644:</span> <span class="f">(</span><span class="f">{</span>    <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="645" /><span class="Maybe">     645:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                    \
<a name="646" /><span class="Maybe">     646:</span>     <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span><span class="f">;</span>                    \
<a name="647" /><span class="Maybe">     647:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="648" /><span class="Maybe">     648:</span> <span class="f">}</span><span class="f">)</span>
<a name="649" /><span class="Maybe">     649:</span> 
<a name="650" /><span class="Maybe">     650:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzA_"><span class="b">__this_cpu_xchg</span></a>
<a name="651" /><span class="False">     651:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzFfMA__"><span class="b">__this_cpu_xchg_1</span></a>
<a name="652" /><span class="False">     652:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzFfMA__"><span class="b">__this_cpu_xchg_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3hjaGdfMA__"><span class="b">__this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="653" /><span class="Maybe">     653:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="654" /><span class="False">     654:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzJfMA__"><span class="b">__this_cpu_xchg_2</span></a>
<a name="655" /><span class="False">     655:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzJfMA__"><span class="b">__this_cpu_xchg_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3hjaGdfMA__"><span class="b">__this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="656" /><span class="Maybe">     656:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="657" /><span class="False">     657:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzRfMA__"><span class="b">__this_cpu_xchg_4</span></a>
<a name="658" /><span class="False">     658:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzRfMA__"><span class="b">__this_cpu_xchg_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3hjaGdfMA__"><span class="b">__this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="659" /><span class="Maybe">     659:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="660" /><span class="False">     660:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzhfMA__"><span class="b">__this_cpu_xchg_8</span></a>
<a name="661" /><span class="False">     661:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzhfMA__"><span class="b">__this_cpu_xchg_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX3hjaGdfMA__"><span class="b">__this_cpu_generic_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="662" /><span class="Maybe">     662:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="663" /><span class="Maybe">     663:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV94Y2hnXzA_"><span class="b">__this_cpu_xchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    \
<a name="664" /><span class="Maybe">     664:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">__this_cpu_xchg_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="665" /><span class="Maybe">     665:</span> <span class="f">#</span><span class="n">endif</span>
<a name="666" /><span class="Maybe">     666:</span> 
<a name="667" /><span class="Maybe">     667:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfMA__"><span class="b">__this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>            \
<a name="668" /><span class="Maybe">     668:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="669" /><span class="Maybe">     669:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">pcp</span><span class="f">)</span> <span class="b">ret__</span><span class="f">;</span>                        \
<a name="670" /><span class="Maybe">     670:</span>     <span class="b">ret__</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">)</span><span class="f">;</span>                    \
<a name="671" /><span class="Maybe">     671:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">ret__</span> <span class="f">==</span> <span class="f">(</span><span class="b">oval</span><span class="f">)</span><span class="f">)</span>                        \
<a name="672" /><span class="Maybe">     672:</span>         <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span><span class="f">;</span>                \
<a name="673" /><span class="Maybe">     673:</span>     <span class="b">ret__</span><span class="f">;</span>                                \
<a name="674" /><span class="Maybe">     674:</span> <span class="f">}</span><span class="f">)</span>
<a name="675" /><span class="Maybe">     675:</span> 
<a name="676" /><span class="Maybe">     676:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzA_"><span class="b">__this_cpu_cmpxchg</span></a>
<a name="677" /><span class="False">     677:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzFfMA__"><span class="b">__this_cpu_cmpxchg_1</span></a>
<a name="678" /><span class="False">     678:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzFfMA__"><span class="b">__this_cpu_cmpxchg_1</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfMA__"><span class="b">__this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="679" /><span class="Maybe">     679:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="680" /><span class="False">     680:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzJfMA__"><span class="b">__this_cpu_cmpxchg_2</span></a>
<a name="681" /><span class="False">     681:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzJfMA__"><span class="b">__this_cpu_cmpxchg_2</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfMA__"><span class="b">__this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="682" /><span class="Maybe">     682:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="683" /><span class="False">     683:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzRfMA__"><span class="b">__this_cpu_cmpxchg_4</span></a>
<a name="684" /><span class="False">     684:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzRfMA__"><span class="b">__this_cpu_cmpxchg_4</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfMA__"><span class="b">__this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="685" /><span class="Maybe">     685:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="686" /><span class="False">     686:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzhfMA__"><span class="b">__this_cpu_cmpxchg_8</span></a>
<a name="687" /><span class="False">     687:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzhfMA__"><span class="b">__this_cpu_cmpxchg_8</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfMA__"><span class="b">__this_cpu_generic_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="688" /><span class="Maybe">     688:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="689" /><span class="Maybe">     689:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnXzA_"><span class="b">__this_cpu_cmpxchg</span></a><span class="f">(</span><span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>    \
<a name="690" /><span class="Maybe">     690:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X3NpemVfY2FsbF9yZXR1cm4yXzA_"><span class="b">__pcpu_size_call_return2</span></a><span class="f">(</span><span class="b">__this_cpu_cmpxchg_</span><span class="f">,</span> <span class="b">pcp</span><span class="f">,</span> <span class="b">oval</span><span class="f">,</span> <span class="b">nval</span><span class="f">)</span>
<a name="691" /><span class="Maybe">     691:</span> <span class="f">#</span><span class="n">endif</span>
<a name="692" /><span class="Maybe">     692:</span> 
<a name="693" /><span class="Maybe">     693:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="694" /><span class="Maybe">     694:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="695" /><span class="Maybe">     695:</span>     <span class="m">int</span> <span class="b">__ret</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span>                            \
<a name="696" /><span class="Maybe">     696:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">)</span> <span class="f">==</span> <span class="f">(</span><span class="b">oval1</span><span class="f">)</span> <span class="f">&amp;&amp;</span>                \
<a name="697" /><span class="Maybe">     697:</span>              <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9yZWFkXzA_"><span class="b">__this_cpu_read</span></a><span class="f">(</span><span class="b">pcp2</span><span class="f">)</span>  <span class="f">==</span> <span class="f">(</span><span class="b">oval2</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>        \
<a name="698" /><span class="Maybe">     698:</span>         <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="f">(</span><span class="b">nval1</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>            \
<a name="699" /><span class="Maybe">     699:</span>         <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV93cml0ZV8w"><span class="b">__this_cpu_write</span></a><span class="f">(</span><span class="b">pcp2</span><span class="f">,</span> <span class="f">(</span><span class="b">nval2</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>            \
<a name="700" /><span class="Maybe">     700:</span>         <span class="b">__ret</span> <span class="f">=</span> <span class="c">1</span><span class="f">;</span>                        \
<a name="701" /><span class="Maybe">     701:</span>     <span class="f">}</span>                                \
<a name="702" /><span class="Maybe">     702:</span>     <span class="f">(</span><span class="b">__ret</span><span class="f">)</span><span class="f">;</span>                            \
<a name="703" /><span class="Maybe">     703:</span> <span class="f">}</span><span class="f">)</span>
<a name="704" /><span class="Maybe">     704:</span> 
<a name="705" /><span class="Maybe">     705:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8w"><span class="b">__this_cpu_cmpxchg_double</span></a>
<a name="706" /><span class="Maybe">     706:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8xXzA_"><span class="b">__this_cpu_cmpxchg_double_1</span></a>
<a name="707" /><span class="Maybe">     707:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8xXzA_"><span class="b">__this_cpu_cmpxchg_double_1</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="708" /><span class="Maybe">     708:</span>     <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="709" /><span class="Maybe">     709:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="710" /><span class="Maybe">     710:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8yXzA_"><span class="b">__this_cpu_cmpxchg_double_2</span></a>
<a name="711" /><span class="Maybe">     711:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8yXzA_"><span class="b">__this_cpu_cmpxchg_double_2</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="712" /><span class="Maybe">     712:</span>     <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="713" /><span class="Maybe">     713:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="714" /><span class="False">     714:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV80XzA_"><span class="b">__this_cpu_cmpxchg_double_4</span></a>
<a name="715" /><span class="False">     715:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV80XzA_"><span class="b">__this_cpu_cmpxchg_double_4</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="716" /><span class="False">     716:</span>     <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="717" /><span class="Maybe">     717:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="718" /><span class="False">     718:</span> <span class="f">#</span> <span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV84XzA_"><span class="b">__this_cpu_cmpxchg_double_8</span></a>
<a name="719" /><span class="False">     719:</span> <span class="f">#</span>  <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV84XzA_"><span class="b">__this_cpu_cmpxchg_double_8</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="720" /><span class="False">     720:</span>     <a href="cpu.c_macros_noref.html#_X190aGlzX2NwdV9nZW5lcmljX2NtcHhjaGdfZG91YmxlXzA_"><span class="b">__this_cpu_generic_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>
<a name="721" /><span class="Maybe">     721:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="722" /><span class="Maybe">     722:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_X190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZV8w"><span class="b">__this_cpu_cmpxchg_double</span></a><span class="f">(</span><span class="b">pcp1</span><span class="f">,</span> <span class="b">pcp2</span><span class="f">,</span> <span class="b">oval1</span><span class="f">,</span> <span class="b">oval2</span><span class="f">,</span> <span class="b">nval1</span><span class="f">,</span> <span class="b">nval2</span><span class="f">)</span>    \
<a name="723" /><span class="Maybe">     723:</span>     <a href="cpu.c_macros_noref.html#_X19wY3B1X2RvdWJsZV9jYWxsX3JldHVybl9ib29sXzA_"><span class="b">__pcpu_double_call_return_bool</span></a><span class="f">(</span><span class="b">__this_cpu_cmpxchg_double_</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">pcp2</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">oval1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">oval2</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">nval1</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">nval2</span><span class="f">)</span><span class="f">)</span>
<a name="724" /><span class="Maybe">     724:</span> <span class="f">#</span><span class="n">endif</span>
<a name="725" /><span class="Maybe">     725:</span> 
<a name="726" /><span class="True">     726:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_PERCPU_H */</span>
<a name="727" /><span class="True">     727:</span> </pre>
  </body>
</html>
